git blame的に行の最終編集者を表示する
#UserScript
https://gyazo.com/da242eb1f582f690b90a3d1f2b47ef2d
/forum-jp/git blame的に各行の最終編集者を知りたいを見ると、Scrapboxの思想には反することになるけれど、いちおう動くものができたので公開します
1c 1wは/shokai/文字カウントです
文字を選択すると、カーソルのある行の最終編集者のユーザー名をポップアップでお知らせします
編集日時はテロメア見れば分かるので表示しないようにしました
code:popup.js
(async () => {
const getUsersInProject = async () => {
const resp = await fetch(/api/projects/${scrapbox.Project.name});
const json = await resp.json()
const users = json.users;
// build id -> user map
const userMap = new Map();
users.forEach(user => {
userMap.set(user.id, user);
});
return userMap;
};
const userMap = await getUsersInProject();
scrapbox.PopupMenu.addButton({
title: () => {
if (!scrapbox.Page.lines) return null;
const lineMap = (() => {
const map = new Map();
scrapbox.Page.lines.forEach(line => map.set(line.id, line));
return map;
})();
const lineDom = document.querySelector('.cursor-line');
if (!lineDom) return null;
const lineId = lineDom.id.substr(1);
const line = lineMap.get(lineId);
if (!line) return null;
const userId = line.userId;
if (!userId) return null;
const user = userMap.get(userId);
if (!user) return null;
return edited by ${user.name};
},
onClick: () => null
});
})();
TODO
コードブロックではポップアップ出ないので使えない
文字を選択してポップアップを出さないと使えない
テロメアに出る形だとうれしい
複数行選択してもカーソルのある行の編集者しか見れない